Generally, a web service is a software component that supports machine-to-machine service-based interaction over a network, such as the Internet or another form of network. Typically, each web service includes an interface that is described in a Web Services Description Language (WSDL). Other systems can interact with the web service by sending requests to the interface, typically in the form of Simple Object Access Protocol (SOAP) messages, formatted according to an Extensible Markup Language (XML) format, and conveyed to the web service using the Hypertext Transfer Protocol (HTTP).
The Java API for XML Web Services (JAX-WS) is a programming language API specification that is provided as part of the Java EE platform, for use in creating web services. JAX-WS uses annotations to simplify the development and deployment of web service clients and endpoints. However, although the JAX-WS specification and associated reference implementation provides some support for enabling asynchronous clients, JAX-WS primarily addresses asynchronous threading at the client. However, as soon as the request interacts with the message transport, such as by communicating an HTTP request to a service at a remote server, it will block at the client. While attempts have been made to add asynchrony in the transport, such that the service can respond immediately, this adds complexity to the client, which becomes a de facto server. When the client is itself part of a larger application, or participates in a larger environment such as a cluster, where the needs are more sophisticated, the added complexity creates a burden on the developer in developing their applications, and can affect performance. These are the general areas that embodiments of the invention are intended to address.